"""
@Author : 合肥一元数智教育科技有限公司
@Date :  2025/5/12 9:47
@Description : 
1. 列表的定义方式
  1.1   lst = []  定义空列表     列表中的元素未知
  1.2   lst = list()  定义空列表  list函数
  1.3  lst  = [1,2,3,4,5,6]   定义列表的同时 实现初始化
"""
# 使用list函数 定义空列表
# lst = list()
lst = [0, 1, 2, 3, 4, 5, 6]
# 判定lst的数据类型
print(f'lst的数据类型 = {type(lst)}')
print(lst)

print('-----------------------列表的切片----------------------------')
# 通过索引获取元素  index   0   负索引 -1    列表名[index]
print(f'lst[0] = {lst[0]}')
print(f'lst[-1] = {lst[-1]}')
print(f'lst[-2] = {lst[-2]}')

# 获取区间  [start:end:step]   [start,end)
print(f'lst[0:3] = {lst[0:3]}')
print(f'lst[0:3] = {lst[:3]}')  # 默认从索引0开始
print(f'lst[:] = {lst[:]}')  # 默认从索引0开始  没有end则获取所有元素
print(f'lst[1:] = {lst[1:]}')  # 没有end则获取所有元素
print(f'lst[1:5:1] = {lst[1:5:1]}')
print(f'lst[1:6:2] = {lst[1:6:2]}')
print(f'lst[::2] = {lst[::2]}')
print(f'lst[::] = {lst[::]}')

print('-----------------------列表的运算----------------------------')

lst1 = [0, 1, 10, 20, 2]
lst2 = [3, 4, 5, 3, 5, 4, 5]

lst3 = lst1 + lst2  # 列表的合并 新列表
print(lst3)

lst3 = lst1 * 2  # 重复列表
print(lst3)

result = 1 in lst2  # 判定元素是否在列表中
print(result)

max_num = max(lst2)
print("列表中的最大值是:", max_num)
min_num = min(lst2)
print("列表中的最小值是", min_num)

# 统计元素在列表找那个出现的次数
count = lst2.count(5)
print('元素在列表中出现的次数:', count)

# 列表的扩展
lst2.extend(lst1)
print(lst2)

# 判定指定元素在列表中第一次出现的位置   index(v,start,end)
index = lst2.index(5)
print(index)
index = lst2.index(5, index + 1)
print(index)

# 改变列表中的元素
lst1[0] = -1
print(lst1)
lst1.append(-1)  # 将元素追加到列表最后
print(lst1)
# 插入值  在指定索引位添加值 原来的值后移
lst1.insert(0, -2)
print(lst1)

# 移除列表中的元素  最后一个元素
result = lst1.pop()
print(result)  # 返回删除的值
print(lst1)
# 移除指定的元素
lst1.remove(1)
print(lst1)

# del  删除列表中的元素
# del lst1[0]
# del lst1[:]   # 切片区间
# del lst1    # 删除   变量不存在

# 翻转列表
lst1.reverse()
print(lst1)

# 列表排序
lst1.sort()  # 正序
lst1.sort(reverse=True)  # 倒序
print(lst1)
# 清空列表
lst1.clear()
print(lst1)

#  列表复制
lst1 = [0, 1, 2, 3, 4, 5, 6]  # 内存地址
print(id(lst1))
# lst2 = lst1    # 1818870518336   lst1 lst2 同时指向相同的内存空间
lst2 = lst1.copy()   # 列表复制一份   lst1 lst2  互相独立
print(id(lst2))
lst1.append(7)
print(lst1)  # [0, 1, 2, 3, 4, 5, 6,7]
print(lst2)  # [0, 1, 2, 3, 4, 5, 6,7]